main: Prefer implicit grab widget to target widget for motion events
authorTimm Bäder <mail@baedert.org>
Tue, 5 Feb 2019 14:13:01 +0000 (15:13 +0100)
committerTimm Bäder <mail@baedert.org>
Tue, 5 Feb 2019 14:13:01 +0000 (15:13 +0100)
When an implcit grab is going on, we don't need to consider other
widgets for motion (etc.) events.

gtk/gtkmain.c

index e1bd39dd862db11599e3dccb103bd0a3bb469472..185ffb7c7d2bcc49312d1e5eac80e006322d765c 100644 (file)
@@ -1615,9 +1615,14 @@ handle_pointing_event (GdkEvent *event)
     case GDK_TOUCH_BEGIN:
     case GDK_TOUCH_UPDATE:
     case GDK_MOTION_NOTIFY:
-      target = gtk_widget_pick (toplevel_widget, x, y);
-      if (target == NULL)
+      target = gtk_window_lookup_pointer_focus_implicit_grab (toplevel, device, sequence);
+
+      if (!target)
+        target = gtk_widget_pick (toplevel_widget, x, y);
+
+      if (!target)
         target = toplevel_widget;
+
       old_target = update_pointer_focus_state (toplevel, event, target);
 
       if (event->any.type == GDK_MOTION_NOTIFY || event->any.type == GDK_ENTER_NOTIFY)